package cn.ljy.quicksnip.dao.mapper;

import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 专门用于计算统计结果
 */
@Mapper
public interface CountMapper {
    /**
     * 说明：获取生产订单量最大的几个车型，返回名称和对应的生产订单数
     * 按生产订单数从大到小的顺序排列出来
     * @param limit 表示要获取的最大销量的数量
     * @return id表示车型id，name表示车型名字，number表示生产订单数
     */
    @MapKey("id")
    List<Map<String, Object>> getProductModelsOrderByOrderCountDesc(@Param(value = "limit")Integer limit);

    /**
     * 说明：根据生产订单的状态进行统计，返回状态名（按数据库枚举值）和对应的生产订单数
     * 按状态名的枚举顺序来排序
     * @return status表示订单状态，number表示生产订单数
     */
    @MapKey("status")
    List<Map<String, Object>> getProductionOrderStatusCountWithPriorityOrder();

    /**
     * 说明：根据商城订单的状态进行统计，返回状态名（按数据库枚举值）和对应的生产订单数
     * 按状态名的枚举顺序来排序
     * @return status表示订单状态，number表示生产订单数
     */
    @MapKey("status")
    List<Map<String, Object>> getShopCarOrderStatusCountWithPriorityOrder();

    /**
     * 统计动态时间范围内的工序通过率
     * @param timeUnit 时间单位（day/month/week）
     * @param days 周期长度（如5天、5个月、5周）
     * @return 包含每天/每月/每周通过率的列表
     */
    @MapKey("audit_date")
    List<Map<String, Object>> getShopCarOrderStepAuditCountByDynamicTime(String timeUnit,int days);
}
